package com.ruoyi.chat.service;

import java.util.List;

import com.ruoyi.chat.domain.ChatGroup;
import com.ruoyi.chat.domain.ChatUser;
import com.ruoyi.chat.domain.FriendMessage;
import io.swagger.models.auth.In;

/**
 * 聊天用户Service接口
 *

 * @date 2023-07-23
 */
public interface IChatUserService
{
    /**
     * 查询聊天用户
     *
     * @param id 聊天用户主键
     * @return 聊天用户
     */
    public ChatUser selectChatUserById(Long id);

    /**
     * 查询聊天用户好友信息
     *
     * @param id 聊天用户主键
     * @return 聊天用户
     */
    public List<ChatUser> selectChatAllUserById(Long id, Integer friendStatus);

    /**
     * 查询聊天用户列表
     *
     * @param chatUser 聊天用户
     * @return 聊天用户集合
     */
    public List<ChatUser> selectChatUserList(ChatUser chatUser);

    /**
     * 新增聊天用户
     *
     * @param chatUser 聊天用户
     * @return 结果
     */
    public int insertChatUser(ChatUser chatUser);

    /**
     * 修改聊天用户
     *
     * @param chatUser 聊天用户
     * @return 结果
     */
    public int updateChatUser(ChatUser chatUser);

    /**
     * 批量删除聊天用户
     *
     * @param ids 需要删除的聊天用户主键集合
     * @return 结果
     */
    public int deleteChatUserByIds(Long[] ids);

    /**
     * 删除聊天用户信息
     *
     * @param id 聊天用户主键
     * @return 结果
     */
    public int deleteChatUserById(Long id);

    int deleteUserById(Long id, Long userId);

    /**
     * 查询聊天数据（按条数查不重复好友id的最后一个的聊天数据）
     * num 获取的条数
     */
     public List<FriendMessage> selectAllchatLastOne(Long userId,Integer num);


    /**
     * 查询用户加入的群
     *
     * @param
     * @return 聊天用户集合
     */
    List<ChatGroup> selectChatGroupList(Long userId);


    /**
     *查询单个好友的聊天数据
     */
    List<FriendMessage> selectFriendMessage(Long userId, Long friendId ,Integer page, Integer size);

    /**
     * 添加好友
     */
    int addFriend(Long userId, Long friendId, String messageAdd);

    /**
     * 修改好友关系
     * @param userId
     * @param friendId
     * @param friendStatus
     * @return
     */
    int updateFriendUser(Long userId, Long friendId, Integer friendStatus);

    int addGroupUser(Long groupId,Long userId,Integer groupStatus);

    List<ChatUser> selectUserGroupStatus(Long userId);

    /**
     * 根据系统id获取聊天用户详细信息
     */
    ChatUser getUserBySystemId(Long systemId);

    List<ChatUser> groupUserList(Long groupId);

    /**
     * 群主是否同意用户加入群聊
     */
    int updateGroupUsers(Long groupId, Long userId, Integer groupStatus);
}
